import TIM from 'tim-wx-sdk';
import TIMUploadPlugin from 'tim-upload-plugin';
import store from '@/store/index.js'
// 创建 SDK 实例，TIM.create() 方法对于同一个 SDKAppID 只会返回同一份实例
let options = {
	SDKAppID: 1400694153 // 接入时需要将 0 替换为您的云通信应用的 SDKAppID，类型为 Number
}
let tim = TIM.create(options) // SDK 实例通常用 tim 表示
// 设置 SDK 日志输出级别，详细分级请参考 setLogLevel 接口的说明
tim.setLogLevel(0) // 普通级别，日志量较多，接入时建议使用
// getApp().$get({
// 	url: '/homepage/getImUser',
// 	data: {
// 		access_token: uni.getStorageSync('access_token')
// 	}
// }).then(res => {
// 	tim.login({
// 		userID: String(res.data.userId),
// 		userSig: res.data.userSig
// 	}).then(loginres=>{
// 		console.log(loginres,'登录成功')
// 	})
// })
tim.on(TIM.EVENT.SDK_READY, function(event) {
	console.log('SDK_READY--成功')
	// SDK ready 后接入侧才可以调用 sendMessage 等需要鉴权的接口，否则会提示失败！
	// event.name - TIM.EVENT.SDK_READY
})

tim.on(TIM.EVENT.MESSAGE_RECEIVED, function(event) {
	// 收到推送的单聊、群聊、群提示、群系统通知的新消息，可通过遍历 event.data 获取消息列表数据并渲染到页面
	// event.name - TIM.EVENT.MESSAGE_RECEIVED
	// event.data - 存储 Message 对象的数组 - [Message]
	const length = event.data.length
	let message
	for (let i = 0; i < length; i++) {
		// Message 实例的详细数据结构请参考 Message
		// 其中 type 和 payload 属性需要重点关注
		// 从v2.6.0起，AVChatRoom 内的群聊消息，进群退群等群提示消息，增加了 nick（昵称） 和 avatar（头像URL） 属性，便于接入侧做体验更好的展示
		// 前提您需要先调用 updateMyProfile 设置自己的 nick（昵称） 和 avatar（头像 URL），请参考 updateMyProfile 接口的说明
		message = event.data[i]
		switch (message.type) {
			case TIM.TYPES.MSG_TEXT:
				// 收到了文本消息
				_handleTextMsg(message)
				break
			case TIM.TYPES.MSG_CUSTOM:
				// 收到了自定义消息
				_handleCustomMsg(message)
				break
			case TIM.TYPES.MSG_GRP_TIP:
				// 收到了群提示消息，如成员进群、群成员退群
				_handleGroupTip(message)
				break
			case TIM.TYPES.MSG_GRP_SYS_NOTICE:
				// 收到了群系统通知，通过 REST API 在群组中发送的系统通知请参考 在群组中发送系统通知 API
				_handleGroupSystemNotice(message)
				break
			default:
				break
		}
	}
})

function _handleTextMsg(message) {
	// 详细数据结构请参考 TextPayload 接口的说明
	console.log(message)
	console.log(message.payload.text, '收到文本消息了') // 文本消息内容
	let info = {
		group_id: message.to,
		nick: message.nick,
		text: message.payload.text
	}
	store.commit('danmu/add')
	store.commit('danmu/addmessage', info)
	console.log(store.state.messages, 'mmmmmmmmmmmmmsjjjjjjjjjjjjjj')
}

function _handleCustomMsg(message) {
	// 详细数据结构请参考 CustomPayload 接口的说明
	console.log(message.payload)
}

function _handleGroupTip(message) {
	console.log('群消息被监控到了')
	// 详细数据结构请参考 GroupTipPayload 接口的说明
	switch (message.payload.operationType) {
		case TIM.TYPES.GRP_TIP_MBR_JOIN: // 有成员加群
			console.log('有人进群')
			console.log(store.state.random)
			store.commit('danmu/changerandom')
			break
		case TIM.TYPES.GRP_TIP_MBR_QUIT: // 有群成员退群
			console.log('有人退群')
			console.log(store.state.random)
			store.commit('danmu/changerandom')
			break
		case TIM.TYPES.GRP_TIP_MBR_KICKED_OUT: // 有群成员被踢出群
			break
		case TIM.TYPES.GRP_TIP_MBR_SET_ADMIN: // 有群成员被设为管理员
			break
		case TIM.TYPES.GRP_TIP_MBR_CANCELED_ADMIN: // 有群成员被撤销管理员
			break
		case TIM.TYPES.GRP_TIP_GRP_PROFILE_UPDATED: // 群组资料变更
			//从v2.6.0起支持群组自定义字段变更内容
			// message.payload.newGroupProfile.groupCustomField 
			break
		case TIM.TYPES.GRP_TIP_MBR_PROFILE_UPDATED: // 群成员资料变更，例如群成员被禁言
			break
		default:
			break
	}
}

function _handleGroupSystemNotice(message) {
	// 详细数据结构请参考  GroupSystemNoticePayload 接口的说明
	console.log(message.payload.userDefinedField) // 用户自定义字段。使用 RESTAPI 发送群系统通知时，可在该属性值中拿到自定义通知的内容。
	// 用 REST API 发送群系统通知请参考 在群组中发送系统通知 API
}
export default tim
